package 集合;

import java.util.HashMap;
import java.util.Map;

public class No205同构字符串 {

    /**
     * 给定两个字符串 s 和 t，判断它们是否是同构的。
     * 如果 s 中的字符可以被替换得到 t ，那么这两个字符串是同构的。
     * 所有出现的字符都必须用另一个字符替换，同时保留字符的顺序。
     * 两个字符不能映射到同一个字符上，但字符可以映射自己本身。
     * 示例 1:
     * 输入: s = "egg", t = "add"
     * 输出: true
     * 示例 2:
     * 输入: s = "foo", t = "bar"
     * 输出: false
     */

    public static boolean isIsomorphic(String s, String t) {

        if(s.length()!=t.length())
            return false;

        Map<Character,Character> map1=new HashMap<>();
        Map<Character,Character> map2=new HashMap<>();

        //长度相等
        for(int i=0;i<t.length();i++){
            char c1=s.charAt(i);
            char c2=t.charAt(i);
            if(!map1.containsKey(c1)){
                map1.put(c1,c2);
            }
            if(!map2.containsKey(c2)){
                map2.put(c2,c1);
            }

            if(map1.get(c1)!=c2||map2.get(c2)!=c1)
                return false;

        }
        return true;
    }

    public static void main(String[] args) {
        boolean isomorphic = isIsomorphic("ab", "ca");
        System.out.println(isomorphic);
    }

}
